//! 科学相关字符集
//! 
//! 包含物理、化学、生物、天文等科学领域的字符和图标

use std::collections::HashMap;
use crate::CharacterSet;

/// 获取科学相关字符集
pub fn get_science_characters() -> HashMap<String, CharacterSet> {
    let mut characters = HashMap::new();

    // 物理相关
    characters.insert("atom".to_string(),
        CharacterSet::new()
            .simple("⚛")
            .icon("⚛️")
            .bold("⚛")
    );

    characters.insert("nuclear".to_string(),
        CharacterSet::new()
            .simple("⚛")
            .icon("⚛️")
            .bold("⚛")
    );

    characters.insert("electron".to_string(),
        CharacterSet::new()
            .simple("e⁻")
            .icon("e⁻")
            .bold("e⁻")
    );

    characters.insert("proton".to_string(),
        CharacterSet::new()
            .simple("p⁺")
            .icon("p⁺")
            .bold("p⁺")
    );

    characters.insert("neutron".to_string(),
        CharacterSet::new()
            .simple("n⁰")
            .icon("n⁰")
            .bold("n⁰")
    );

    characters.insert("energy".to_string(),
        CharacterSet::new()
            .simple("E")
            .icon("⚡")
            .bold("E")
    );

    characters.insert("force".to_string(),
        CharacterSet::new()
            .simple("F")
            .icon("→")
            .bold("F")
    );

    characters.insert("velocity".to_string(),
        CharacterSet::new()
            .simple("v")
            .icon("→")
            .bold("v")
    );

    characters.insert("acceleration".to_string(),
        CharacterSet::new()
            .simple("a")
            .icon("→")
            .bold("a")
    );

    characters.insert("mass".to_string(),
        CharacterSet::new()
            .simple("m")
            .icon("⚖")
            .bold("m")
    );

    characters.insert("weight".to_string(),
        CharacterSet::new()
            .simple("W")
            .icon("⚖")
            .bold("W")
    );

    characters.insert("temperature".to_string(),
        CharacterSet::new()
            .simple("T")
            .icon("🌡")
            .bold("T")
    );

    characters.insert("pressure".to_string(),
        CharacterSet::new()
            .simple("P")
            .icon("P")
            .bold("P")
    );

    characters.insert("volume".to_string(),
        CharacterSet::new()
            .simple("V")
            .icon("V")
            .bold("V")
    );

    characters.insert("density".to_string(),
        CharacterSet::new()
            .simple("ρ")
            .icon("ρ")
            .bold("ρ")
    );

    characters.insert("wavelength".to_string(),
        CharacterSet::new()
            .simple("λ")
            .icon("λ")
            .bold("λ")
    );

    characters.insert("frequency".to_string(),
        CharacterSet::new()
            .simple("f")
            .icon("f")
            .bold("f")
    );

    characters.insert("amplitude".to_string(),
        CharacterSet::new()
            .simple("A")
            .icon("A")
            .bold("A")
    );

    // 化学相关
    characters.insert("molecule".to_string(),
        CharacterSet::new()
            .simple("H₂O")
            .icon("🧪")
            .bold("H₂O")
    );

    characters.insert("chemical".to_string(),
        CharacterSet::new()
            .simple("🧪")
            .icon("🧪")
            .bold("🧪")
    );

    characters.insert("acid".to_string(),
        CharacterSet::new()
            .simple("H⁺")
            .icon("🧪")
            .bold("H⁺")
    );

    characters.insert("base".to_string(),
        CharacterSet::new()
            .simple("OH⁻")
            .icon("🧪")
            .bold("OH⁻")
    );

    characters.insert("ph".to_string(),
        CharacterSet::new()
            .simple("pH")
            .icon("pH")
            .bold("pH")
    );

    characters.insert("oxidation".to_string(),
        CharacterSet::new()
            .simple("O")
            .icon("O")
            .bold("O")
    );

    characters.insert("reduction".to_string(),
        CharacterSet::new()
            .simple("R")
            .icon("R")
            .bold("R")
    );

    characters.insert("catalyst".to_string(),
        CharacterSet::new()
            .simple("cat")
            .icon("⚗")
            .bold("cat")
    );

    characters.insert("reaction".to_string(),
        CharacterSet::new()
            .simple("→")
            .icon("⚗")
            .bold("→")
    );

    characters.insert("equilibrium".to_string(),
        CharacterSet::new()
            .simple("⇌")
            .icon("⇌")
            .bold("⇌")
    );

    // 生物相关
    characters.insert("dna".to_string(),
        CharacterSet::new()
            .simple("🧬")
            .icon("🧬")
            .bold("🧬")
    );

    characters.insert("gene".to_string(),
        CharacterSet::new()
            .simple("🧬")
            .icon("🧬")
            .bold("🧬")
    );

    characters.insert("cell".to_string(),
        CharacterSet::new()
            .simple("🔬")
            .icon("🔬")
            .bold("🔬")
    );

    characters.insert("microscope".to_string(),
        CharacterSet::new()
            .simple("🔬")
            .icon("🔬")
            .bold("🔬")
    );

    characters.insert("bacteria".to_string(),
        CharacterSet::new()
            .simple("🦠")
            .icon("🦠")
            .bold("🦠")
    );

    characters.insert("virus".to_string(),
        CharacterSet::new()
            .simple("🦠")
            .icon("🦠")
            .bold("🦠")
    );

    characters.insert("evolution".to_string(),
        CharacterSet::new()
            .simple("🧬")
            .icon("🧬")
            .bold("🧬")
    );

    characters.insert("mutation".to_string(),
        CharacterSet::new()
            .simple("🧬")
            .icon("🧬")
            .bold("🧬")
    );

    characters.insert("protein".to_string(),
        CharacterSet::new()
            .simple("🧬")
            .icon("🧬")
            .bold("🧬")
    );

    characters.insert("enzyme".to_string(),
        CharacterSet::new()
            .simple("🧬")
            .icon("🧬")
            .bold("🧬")
    );

    // 天文相关
    characters.insert("planet".to_string(),
        CharacterSet::new()
            .simple("🪐")
            .icon("🪐")
            .bold("🪐")
    );

    characters.insert("earth".to_string(),
        CharacterSet::new()
            .simple("🌍")
            .icon("🌍")
            .bold("🌍")
    );

    characters.insert("moon".to_string(),
        CharacterSet::new()
            .simple("🌙")
            .icon("🌙")
            .bold("🌙")
    );

    characters.insert("sun".to_string(),
        CharacterSet::new()
            .simple("☀")
            .icon("☀️")
            .bold("☀")
    );

    characters.insert("star_astronomy".to_string(),
        CharacterSet::new()
            .simple("⭐")
            .icon("⭐")
            .bold("⭐")
    );

    characters.insert("galaxy".to_string(),
        CharacterSet::new()
            .simple("🌌")
            .icon("🌌")
            .bold("🌌")
    );

    characters.insert("comet".to_string(),
        CharacterSet::new()
            .simple("☄")
            .icon("☄️")
            .bold("☄")
    );

    characters.insert("asteroid".to_string(),
        CharacterSet::new()
            .simple("☄")
            .icon("☄️")
            .bold("☄")
    );

    characters.insert("telescope".to_string(),
        CharacterSet::new()
            .simple("🔭")
            .icon("🔭")
            .bold("🔭")
    );

    characters.insert("satellite".to_string(),
        CharacterSet::new()
            .simple("🛰")
            .icon("🛰️")
            .bold("🛰")
    );

    characters.insert("rocket".to_string(),
        CharacterSet::new()
            .simple("🚀")
            .icon("🚀")
            .bold("🚀")
    );

    characters.insert("space".to_string(),
        CharacterSet::new()
            .simple("🌌")
            .icon("🌌")
            .bold("🌌")
    );

    // 实验室设备
    characters.insert("beaker".to_string(),
        CharacterSet::new()
            .simple("⚗")
            .icon("⚗️")
            .bold("⚗")
    );

    characters.insert("flask".to_string(),
        CharacterSet::new()
            .simple("⚗")
            .icon("⚗️")
            .bold("⚗")
    );

    characters.insert("test_tube".to_string(),
        CharacterSet::new()
            .simple("🧪")
            .icon("🧪")
            .bold("🧪")
    );

    characters.insert("petri_dish".to_string(),
        CharacterSet::new()
            .simple("🦠")
            .icon("🦠")
            .bold("🦠")
    );

    characters.insert("bunsen_burner".to_string(),
        CharacterSet::new()
            .simple("🔥")
            .icon("🔥")
            .bold("🔥")
    );

    characters.insert("centrifuge".to_string(),
        CharacterSet::new()
            .simple("⚗")
            .icon("⚗️")
            .bold("⚗")
    );

    characters.insert("spectrometer".to_string(),
        CharacterSet::new()
            .simple("🔬")
            .icon("🔬")
            .bold("🔬")
    );

    characters.insert("chromatography".to_string(),
        CharacterSet::new()
            .simple("📊")
            .icon("📊")
            .bold("📊")
    );

    // 科学单位
    characters.insert("meter".to_string(),
        CharacterSet::new()
            .simple("m")
            .icon("m")
            .bold("m")
    );

    characters.insert("kilogram".to_string(),
        CharacterSet::new()
            .simple("kg")
            .icon("kg")
            .bold("kg")
    );

    characters.insert("second".to_string(),
        CharacterSet::new()
            .simple("s")
            .icon("s")
            .bold("s")
    );

    characters.insert("ampere".to_string(),
        CharacterSet::new()
            .simple("A")
            .icon("A")
            .bold("A")
    );

    characters.insert("kelvin".to_string(),
        CharacterSet::new()
            .simple("K")
            .icon("K")
            .bold("K")
    );

    characters.insert("mole".to_string(),
        CharacterSet::new()
            .simple("mol")
            .icon("mol")
            .bold("mol")
    );

    characters.insert("candela".to_string(),
        CharacterSet::new()
            .simple("cd")
            .icon("cd")
            .bold("cd")
    );

    characters.insert("newton".to_string(),
        CharacterSet::new()
            .simple("N")
            .icon("N")
            .bold("N")
    );

    characters.insert("joule".to_string(),
        CharacterSet::new()
            .simple("J")
            .icon("J")
            .bold("J")
    );

    characters.insert("watt".to_string(),
        CharacterSet::new()
            .simple("W")
            .icon("W")
            .bold("W")
    );

    characters.insert("volt".to_string(),
        CharacterSet::new()
            .simple("V")
            .icon("V")
            .bold("V")
    );

    characters.insert("ohm".to_string(),
        CharacterSet::new()
            .simple("Ω")
            .icon("Ω")
            .bold("Ω")
    );

    characters.insert("hertz".to_string(),
        CharacterSet::new()
            .simple("Hz")
            .icon("Hz")
            .bold("Hz")
    );

    characters.insert("pascal".to_string(),
        CharacterSet::new()
            .simple("Pa")
            .icon("Pa")
            .bold("Pa")
    );

    characters.insert("tesla".to_string(),
        CharacterSet::new()
            .simple("T")
            .icon("T")
            .bold("T")
    );

    characters.insert("coulomb".to_string(),
        CharacterSet::new()
            .simple("C")
            .icon("C")
            .bold("C")
    );

    characters.insert("farad".to_string(),
        CharacterSet::new()
            .simple("F")
            .icon("F")
            .bold("F")
    );

    characters.insert("henry".to_string(),
        CharacterSet::new()
            .simple("H")
            .icon("H")
            .bold("H")
    );

    characters.insert("siemens".to_string(),
        CharacterSet::new()
            .simple("S")
            .icon("S")
            .bold("S")
    );

    characters.insert("weber".to_string(),
        CharacterSet::new()
            .simple("Wb")
            .icon("Wb")
            .bold("Wb")
    );

    characters.insert("gray".to_string(),
        CharacterSet::new()
            .simple("Gy")
            .icon("Gy")
            .bold("Gy")
    );

    characters.insert("sievert".to_string(),
        CharacterSet::new()
            .simple("Sv")
            .icon("Sv")
            .bold("Sv")
    );

    characters.insert("katal".to_string(),
        CharacterSet::new()
            .simple("kat")
            .icon("kat")
            .bold("kat")
    );

    characters
}
